package com.hzncc.flowable_diboot.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.diboot.core.binding.query.BindQuery;
import com.diboot.core.binding.query.Comparison;
import com.diboot.core.entity.BaseModel;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;

import jakarta.validation.constraints.NotNull;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
* 客户 Entity 定义
* @author MyName
* @version 1.0
* @date 2024-06-19
* Copyright © MyCorp
*/

@TableName("mdl_customer")
@Getter @Setter @Accessors(chain = true) @EqualsAndHashCode(callSuper = true)
public class Customer extends BaseModel {
    private static final long serialVersionUID = 1116649640142010387L;

    /**
     * 租户
     */
    @NotNull(message = "租户不能为空")
    @TableField()
    private String tenantId;

    /**
     * 名称
     */
    @NotNull(message = "名称不能为空")
    @Length(max=100, message="名称长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String name;

    /**
     * SAP客户编号
     */
    @Length(max=100, message="SAP客户编号长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String sn;

    /**
     * 客户来源
     */
    @TableField()
    private String source;

    /**
     * 客户级别
     */
    @TableField()
    private String rank;

    /**
     * 客户行业
     */
    @TableField()
    private String business;

    /**
     * 客户标签
     */
    @TableField()
    private String label;

    /**
     * 成交状态
     */
    @TableField()
    private String status;

    /**
     * 最后跟进时间
     */
    @TableField()
    private LocalDateTime lastFollwUpTime;

    /**
     * 详细地址
     */
    @Length(max=100, message="详细地址长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String address;

    /**
     * 距进入公海天数
     */
    @Length(max=100, message="距进入公海天数长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String expirationTime;

    /**
     * 负责人
     */
    @TableField()
    private String principal;

    /**
     * 进入公海天数
     */
    @TableField()
    private Long enterDays;

    /**
     * 进入公海时间
     */
    @TableField()
    private LocalDateTime enterTime;

    /**
     * 进入公海理由
     */
    @Length(max=500, message="进入公海理由长度应小于500")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String enterReason;

    /**
     * 是否进入公海
     */
    @TableField()
    private Integer isEnter;

    /**
     * 下次联系时间
     */
    @TableField()
    private LocalDateTime nextConnectTime;

    /**
     * 省
     */
    @Length(max=100, message="省长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String province;

    /**
     * 市
     */
    @Length(max=100, message="市长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String city;

    /**
     * 统一信用代码
     */
    @Length(max=100, message="统一信用代码长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String creditCode;

    /**
     * 税号
     */
    @Length(max=100, message="税号长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String taxNumber;

    /**
     * 国际客户来源渠道
     */
    @TableField()
    private String internationalCustomerSource;

    /**
     * 国际客户跟进状态
     */
    @TableField()
    private String internationalFollowStatus;

    /**
     * 国际客户客户地区
     */
    @Length(max=100, message="国际客户客户地区长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String internationalCustomerArea;

    /**
     * 国际客户公司
     */
    @Length(max=100, message="国际客户公司长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String internationalCustomerCompany;

    /**
     * 国际客户城市
     */
    @Length(max=100, message="国际客户城市长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String internationalCustomerCity;

    /**
     * 邮编
     */
    @Length(max=100, message="邮编长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String postCode;

    /**
     * 电话号码
     */
    @Length(max=100, message="电话号码长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String phoneNumber;

    /**
     * 邮箱
     */
    @Length(max=100, message="邮箱长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String email;

    /**
     * 网址
     */
    @Length(max=100, message="网址长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String webUrl;

    /**
     * 产品名称
     */
    @Length(max=100, message="产品名称长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String productName;

    /**
     * 国际客户产品类别
     */
    @TableField()
    private String internationalClientProductType;

    /**
     * 国际客户类型
     */
    @TableField()
    private String internationalCustomerType;

    /**
     * 国际客户询盘质量
     */
    @TableField()
    private String inquiryQuality;

    /**
     * 询盘日期
     */
    @TableField()
    private LocalDate inquiryDate;

    /**
     * 协作人
     */
    @Length(max=100, message="协作人长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String collaborator;

    /**
     * 公司业务描述
     */
    @Length(max=100, message="公司业务描述长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String businessDescription;

    /**
     * 备注
     */
    @Length(max=100, message="备注长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String remark;


}